Dim WorkPortName As String Dim WorkDCB As CommStateDCB Sub UpdateDialogSettings (Index As Integer) For i% = 0 To 5 If WorkDCB.BaudRate = Val(Baud_Rate_Opt(i%).caption) Then Baud_Rate_Opt(i%).value = TRUE End If Next i% Parity_Opt(Asc(WorkDCB.Parity)).value = TRUE Data_Bits_Opt(Asc(WorkDCB.ByteSize) - 4).value = TRUE Stop_bits_Opt(Asc(WorkDCB.StopBits)).value = TRUE End Sub Sub Comm_Device_Opt_Click (Index As Integer) WorkDCB.Id = Chr$(Index) WorkPortName = Comm_Device_Opt(Index).caption + ":" UpdateDialogSettings (Index) DisplayQBOpen WorkDCB, WorkPortName, CommRBBuffer, CommTBBuffer, CommReadInterval End Sub Sub Cancel_Cmmd_Click () Unload PortDlg End Sub Sub Reset_Cmmd_Click () WorkDCB = CommState UpdatePortDlg End Sub Sub Ok_Cmmd_Click () If CommDeviceNum > 0 And CommHandle > -1 Then NoChange = TRUE If CommState.BaudRate <> WorkDCB.BaudRate Then NoChange = FALSE If CommState.Parity <> WorkDCB.Parity Then NoChange = FALSE If CommState.StopBits <> WorkDCB.StopBits Then NoChange = FALSE If CommState.ByteSize <> WorkDCB.ByteSize Then NoChange = FALSE If NoChange = TRUE Then Unload PortDlg Exit Sub End If UpdateCaption " DIALOG: Change Active Settings (Yes), Post-Pone (No), Return to Dialog (Cancel)", 0 Result% = MsgBox("Port Already Active!" + Chr$(13) + "Activate settings Now?", 3 + 16 + 256, "Terminal Sampler II - Port Active") Select Case Result% Case 6 UpdateCaption " Changing Port Settings LIVE!", 0 CommState = WorkDCB PostState = WorkDCB CommPortName = WorkPortName PostPortName = WorkPortName ApiErr% = SetCommState(WorkDCB) Unload PortDlg Case 7 UpdateCaption " Settings Post-Poned until next CONNECT", 0 PostState = WorkDCB PostPortName = WorkPortName Unload PortDlg Case Else DisplayQBOpen WorkDCB, WorkPortName, CommRBBuffer, CommTBBuffer, CommReadInterval End Select Else CommState = WorkDCB PostState = WorkDCB CommPortName = WorkPortName PostPortName = WorkPortName Unload PortDlg End If End Sub Sub Parity_Opt_Click (Index As Integer) If WorkDCB.Parity <> Chr$(Index) Then WorkDCB.Parity = Chr$(Index) DisplayQBOpen WorkDCB, WorkPortName, CommRBBuffer, CommTBBuffer, CommReadInterval End If End Sub Sub Data_Bits_Opt_Click (Index As Integer) If WorkDCB.ByteSize <> Chr$(Index + 4) Then WorkDCB.ByteSize = Chr$(Index + 4) DisplayQBOpen WorkDCB, WorkPortName, CommRBBuffer, CommTBBuffer, CommReadInterval End If End Sub Sub Baud_Rate_Opt_Click (Index As Integer) If WorkDCB.BaudRate <> Val(Baud_Rate_Opt(Index).caption) Then WorkDCB.BaudRate = Val(Baud_Rate_Opt(Index).caption) DisplayQBOpen WorkDCB, WorkPortName, CommRBBuffer, CommTBBuffer, CommReadInterval End If End Sub Sub Stop_Bits_Opt_Click (Index As Integer) If WorkDCB.StopBits <> Chr$(Index) Then WorkDCB.StopBits = Chr$(Index) DisplayQBOpen WorkDCB, WorkPortName, CommRBBuffer, CommTBBuffer, CommReadInterval End If End Sub Sub Form_Load () Remove_Items_From_SysMenu PortDlg WorkDCB = CommState WorkPortName = CommPortName UpdatePortDlg CenterDialog PortDlg End Sub Sub UpdatePortDlg () For i% = 1 To 0 Step -1 ApiErr% = OpenComm(Comm_Device_Opt(i%).caption + ":", 2048, 2048) Select Case ApiErr% Case IE_HARDWARE, IE_OPEN Comm_Device_Opt(i%).enabled = FALSE Case Else ApiErr% = CloseComm(ApiErr%) Comm_Device_Opt(i%).enabled = TRUE Last% = i% End Select Comm_Device_Opt(i%).value = FALSE Next i% If CommDeviceNum > 0 And CommHandle > -1 Then Last% = CommDeviceNum - 1 Comm_Device_Opt(Last%).value = TRUE Else Comm_Device_Opt(Last%).value = TRUE End If WorkDCB.Id = Chr$(Last%) WorkPortName = Comm_Device_Opt(Last%).caption + ":" End Sub